The Peripheral Component Interconnect (PCI) Local Bus specification relates to a 32-bit or 64-bit bus for transferring data between a microprocessor or central processing unit (CPU) and one or more peripheral devices. Peripheral devices, such as disk drives, may be integrated directly onto a motherboard. Other peripheral devices may be added through PCI expansion cards, such as multimedia, graphics, video, audio, and local area network (LAN) cards.
A PCI “device” is an electrical component that conforms to the PCI specification for operation in a PCI bus environment. Every PCI “device” (except host bus bridges) that conforms with the PCI specification should implement “Configuration Address Space” (also called “Configuration Space”). Configuration Space is a specific set of registers used for configuration, initialization and error handling.
Each PCI “device” may have one or more “functions.” For example, a single device may have two “functions”: one “function” relates to a SCSI bus controller, and another “function” relates to an Ethernet controller. Multiple “functions” may also perform the same task, such as a plurality of Ethernet controllers each being a separate “function” of a single “device.” The PCI specification defines a “function” as a “set of logic that is represented by a single Configuration Space.” The PCI specification defines each “function” to have a separate configuration register space, such as a unique 256-byte space, and logic associated with the function. Each function's unique configuration space may be accessed differently than input/output (I/O) or Memory Address Spaces.
A single PCI device may have multiple “functions.” A “multi-function device” should provide a Configuration Space for each function, and thus have multiple Configuration Spaces. Each “function” in a “multi-function device” may be treated as a completely separate device for the purposes of PCI functionality, e.g., each function has its own set of configuration space registers.
In a conventional PCI device, the device's logic may typically be associated on a one-to-one basis with each function's configuration space. In a conventional multi-function PCI device, each function may have a register set that controls the operation of the logic associated with the function.
The PCI-Extended (PCI-X) Addendum to the PCI Local Bus Specification has improvements that enhance the speed and efficiency of the PCI bus. A “function” according to the PCI/X addendum specifies a set of behaviors and a set of registers required for PCI/X compliance.